Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ニンジャスレイヤーTRPG2版を追加 #658

Merged
merged 8 commits into from
Dec 4, 2023

Conversation

shino-0401
Copy link
Contributor

システム概要

ニンジャスレイヤーTRPG2版
https://diehardtales.com/n/n20b0ff1f0f25?magazine_key=mfea3f29976b8&from=membership-magazine

コマンド概要

下記のダイスボットの機能のうち、BCDiceの標準コマンドで代替できないものと、乱数表を参照してのテキスト出力系のみを実装しています。(一部に挙動の差異や、意図的にオミットしたコマンドもあります)
https://note.com/kooreme/n/ncec59ad4ca8d

以下、今回実装したコマンドです。

  • K{x1},{x2},...,{xn}
    • 難易度K([K]ids)の成功判定({x1}B6>=2)を、{x1}~{xn}で指定された分だけ実行します。
      先頭の文字を変えることで、難易度E([E]asy),N([N]ormal),H([H]ard),U([U]ltra-hard)でも実行可能です。(以下も同様)
  • K{x1},{x2},...,{xn}[>={y}]
    • K{x1}のロールの結果を使って、[]内で指定された条件を満たすダイスの個数を追加で出力します。
      判定式は「>=」の他に「>」「<=」「<」「=」「!=」が利用可能です。
      [=5][=6]のように複数記述することで、それぞれで追加判定が可能です。
  • K{x1},{x2},...,{xn}[S] or K{x1},{x2},...,{xn}[S{y}]
    K{x1},{x2},...,{xn}[C] or K{x1},{x2},...,{xn}[C{y}]
    • いずれもK{x1},{x2},...,{xn}[>={y}]のショートカットです。({y}省略時は固定値6で処理します。)
      出力時のテキストが、Sの場合は「サツバツ!」に、Cの場合は「クリティカル!」になります。
      こちらも複数記述することで、それぞれで追加判定が可能です。
  • SB or SB@{x}
    • {x}(1-6/省略時はd6)に対応したサツバツ([S]atz-[B]atz)・クリティカル表の内容を返します。
  • WS{x}
    • {x}(1-12)に対応する[W]as[s]hoi!判定(2d6<={x})を行います
  • WSE or WSE@{x}
    • {x}(1-6/省略時はd6)に対応する死神のエントリー決定表([W]as[s]hoi! [E]ntry)の内容を返します。
  • NAM or NAM@{x1},{x2}
    • {x1}{x2}(共に11~66/省略時はd66)に対応するニンジャ名([Nam]e)を返します。
  • STA
    • d6を4回振って、カラテ/ニューロン/ワザマエ/ジツの値([Sta]tus)を返します。
  • JIT or JIT@{x}
    • {x}(1-6/省略時はd6)に対応する初期ジツ系統([Jit]su)を返します。
  • SKI or SKI@{x}
    • {x}(1-6/省略時はd6)に対応する初期スキル([Ski]ll)を返します。
  • KNO or KNO@{x}
    • {x}(1-6/省略時はd6)に対応する初期知識スキル([Kno]wledge)を返します。
  • ITE or ITE@{x}
    • {x}(1-6/省略時はd6)に対応する初期アイテム([Ite]m)を返します。
  • CYB or CYB@{x}
    • {x}(1-6/省略時はd6)に対応する初期サイバネ([Cyb]ernetics)を返します。
  • BAC or BAC@{x}
    • {x}(11~66/省略時はd66)に対応する生い立ち([Bac]kground)を返します。
  • NB
    • 新規ニンジャ([N]ew[b]ie)、上記のNAM~CYBをまとめて振ってまとめて返します。
  • NRS_E{x} or NRS_E{x}@{y} or NRS@{y}
    • ダイス{x}個で難易度[E]asy(>=3)のNRS判定({x}省略時はスキップ)を行い、失敗した場合は{y}(1~7/省略時は難易度に応じたダイス目)に対応するNRS発狂表を返します。
      「_E」部分を変更することで、難易度N,H,Uでも利用可能です。(Kはありません)

他、既存のニンジャスレイヤーTRPG用ダイスボット(NinjaSleyer.rb)で利用可能だった以下のコマンドも利用可能です。
互換性確保のため、NinjaSlayer.tomlの全テストをNinjaSlayer2_0.tomlに移植した上で100% passed確認済みです。

  • NJx[y] or NJx@y or NJx
    • このコマンドに関しては既存の実装にバグ(NJx系コマンドにコメントを付けると正しく処理が動かない)が見つかったため、一部に暫定措置を入れてあります。
  • EVx[y]/z or EVx@y/z or EVx/z or EVx[y] or EVx@y or EVx
    ATx[y] or ATx@y or ATx
    ELx[y] or ELx@y or ELx
    • これらのコマンドはそのままNinjaSleyer.rbに処理を投げています。

備考

Discordサーバーの方で事前に相談済みですが、既存のニンジャスレイヤーTRPG用ダイスボット(NinjaSleyer.rb)とはダイスで参照する乱数表のテキスト内容に互換性が無いため、新規作成しています。

Copy link

codecov bot commented Dec 3, 2023

Codecov Report

Attention: 6 lines in your changes are missing coverage. Please review.

Comparison is base (e43abc8) 95.64% compared to head (197efea) 95.65%.
Report is 5 commits behind head on master.

Files Patch % Lines
lib/bcdice/game_system/NinjaSlayer2.rb 96.05% 6 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff            @@
##           master     #658    +/-   ##
========================================
  Coverage   95.64%   95.65%            
========================================
  Files         343      344     +1     
  Lines       19786    19939   +153     
  Branches     5174     5226    +52     
========================================
+ Hits        18925    19072   +147     
- Misses        861      867     +6     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Member

@ysakasin ysakasin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

寄稿ありがとうございます。

ゲーム名

noteを見る限り 2.0版 でなく 2版 と書かれているように見えるので、 ニンジャスレイヤーTRPG 2版 としたいです。合わせてIDやクラス名も2.0から2に変更してください。正式名称がどこかWeb上で示されているようでしたら、ソースを教えてください。

対応するコマンド

様々な点に配慮して、BCDiceでは基本的にセッション中に使うコマンドを用意しキャラクター作成のコマンドは基本的には実装しないことにしています。そのため、一部コマンドを除外してください。

受け入れできないコマンド

NAM or NAM@{x1},{x2}
{x1}{x2}(共に11~66/省略時はd66)に対応するニンジャ名([Nam]e)を返します。
STA
d6を4回振って、カラテ/ニューロン/ワザマエ/ジツの値([Sta]tus)を返します。
JIT or JIT@{x}
{x}(1-6/省略時はd6)に対応する初期ジツ系統([Jit]su)を返します。
SKI or SKI@{x}
{x}(1-6/省略時はd6)に対応する初期スキル([Ski]ll)を返します。
KNO or KNO@{x}
{x}(1-6/省略時はd6)に対応する初期知識スキル([Kno]wledge)を返します。
ITE or ITE@{x}
{x}(1-6/省略時はd6)に対応する初期アイテム([Ite]m)を返します。
CYB or CYB@{x}
{x}(1-6/省略時はd6)に対応する初期サイバネ([Cyb]ernetics)を返します。
BAC or BAC@{x}
{x}(11~66/省略時はd66)に対応する生い立ち([Bac]kground)を返します。
NB
新規ニンジャ([N]ew[b]ie)、上記のNAM~CYBをまとめて振ってまとめて返します。

1版との互換性

保たなくて良いので、継承せず実装してください。

書籍版との関連明記

ヘルプメッセージに書籍版に対応していることを明記してほしいです。

def s_to_i(string, default)
return string.nil? ? default : string.to_i
end
private :s_to_i
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

private は以下のように書くと、 private 以降に書かれたメソッドが全てprivateになるので、このように書き直してください。

* privateに関する表記を修正
* NinjaSlayerから継承していた処理をNinjaSlayer2内で実装
@shino-0401
Copy link
Contributor Author

ゲーム名

noteの表記が正式なものですので、2_0や2.0等となっていた箇所は全て2に修正しました。

対応するコマンド

指定のあったコマンド群は全て削除しました。

1版との互換性

全てNinjaSlayer2.rb内にて実装しました。
が、実装している最中に、そもそも2版の処理と噛み合わないように見える箇所が見つかったため現在コミュニティにて確認中です。
確認が取れた場合はその旨を記載(もしくはコマンドごと削除)する可能性がありますので、マージは少々お待ち頂きたく。

書籍版との関連明記

ヘルプメッセージに記載しました。

private

指定された形式に書き直しました。

@ysakasin
Copy link
Member

ysakasin commented Dec 3, 2023

そもそも2版の処理と噛み合わないように見える箇所が見つかったため現在コミュニティにて確認中です。

了解しました。大丈夫になったら再度連絡をください。

@ysakasin ysakasin changed the title ニンジャスレイヤーTRPG2版を追加 [WIP] ニンジャスレイヤーTRPG2版を追加 Dec 3, 2023
@shino-0401
Copy link
Contributor Author

そもそも2版の処理と噛み合わないように見える箇所が見つかったため現在コミュニティにて確認中です。

確認が取れました。
問題のあった2コマンドのうち片方は若干状況が限定されるものの利用可能であること、
もう一方については1版→2版移行時に削除された判定でしたが、2版用ダイスを2版用ルールで使う限り害は無いと判断できそうでしたので、
両方とも注意書きを付けた上でコマンド自体は残す方針になりました。

こちらからの自発的な修正はこれで完了です。

@ysakasin ysakasin changed the title [WIP] ニンジャスレイヤーTRPG2版を追加 ニンジャスレイヤーTRPG2版を追加 Dec 3, 2023
@ysakasin ysakasin merged commit 8e4ae8b into bcdice:master Dec 4, 2023
8 checks passed
@ysakasin
Copy link
Member

ysakasin commented Dec 4, 2023

寄稿ありがとうございます。マージしました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants